﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ProtoGame.GameLib;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;
using ProtoGame.GameLib.Entities;
using Microsoft.Xna.Framework;

namespace ProtoGame.DescritoresContent
{
    public static class PGIMGKobold
    {
        private const ushort tileWidth = 48;
        private const ushort tileHeight = 64;

        public const byte StateParadoCima = 0;
        public const byte StateParadoDireita = 1;
        public const byte StateParadoBaixo = 2;
        public const byte StateParadoEsquerda = 3;
        public const byte StateAndandoCima = 4;
        public const byte StateAndandoDireita = 5;
        public const byte StateAndandoBaixo = 6;
        public const byte StateAndandoEsquerda = 7;

        public const byte StateAtaqueCima = 8;
        public const byte StateAtaqueDireita = 9;
        public const byte StateAtaqueBaixo = 10;
        public const byte StateAtaqueEsquerda = 11;

        public static Tileset CriarTileset(ContentManager content)
        {
            return new Tileset(content.Load<Texture2D>(@"Images\Sprites\kobold"), tileWidth, tileHeight);
        }

        public static Animator CriarAnimator()
        {
            Animator koboldAnim = new Animator();
            koboldAnim.AddStaticAnimation(StateParadoCima, 1);
            koboldAnim.AddStaticAnimation(StateParadoDireita, 4);
            koboldAnim.AddStaticAnimation(StateParadoBaixo, 7);
            koboldAnim.AddStaticAnimation(StateParadoEsquerda, 10);

            koboldAnim.AddAnimation(StateAndandoCima, 0, 1, SpriteEffects.None, TimeSpan.FromSeconds(1 / 10.0), true);
            koboldAnim.AddAnimation(StateAndandoDireita, 3, 4, SpriteEffects.None, TimeSpan.FromSeconds(1 / 10.0), true);
            koboldAnim.AddAnimation(StateAndandoBaixo, 6, 7, SpriteEffects.None, TimeSpan.FromSeconds(1 / 10.0), true);
            koboldAnim.AddAnimation(StateAndandoEsquerda, 9, 10, SpriteEffects.None, TimeSpan.FromSeconds(1 / 10.0), true);

            koboldAnim.AddStaticAnimation(StateAtaqueCima, 2);
            koboldAnim.AddStaticAnimation(StateAtaqueDireita, 5);
            koboldAnim.AddStaticAnimation(StateAtaqueBaixo, 8);
            koboldAnim.AddStaticAnimation(StateAtaqueEsquerda, 11);

            return koboldAnim;
        }

        static Vector2 pixelSeguraArmaCima = new Vector2(10,30);
        static Vector2 pixelSeguraArmaDireita = new Vector2(29,44);
        static Vector2 pixelSeguraArmaBaixo = new Vector2(10,44);
        static Vector2 pixelSeguraArmaEsquerda = new Vector2(18,44);

        public static Vector2 PosicaoPixelSeguraArma(byte state)
        {
            if (state == StateAtaqueCima) return pixelSeguraArmaCima;
            else if (state == StateAtaqueDireita) return pixelSeguraArmaDireita;
            else if (state == StateAtaqueBaixo) return pixelSeguraArmaBaixo;
            else return pixelSeguraArmaEsquerda;
        }
    }
}
